package com.haidechizi.i18n.common.annotation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 2020年6月11日11:33:04
 * 标注返回对象中的Field
 * <p>
 * 1.metaCalculator 不为空时，使用自定义国际化逻辑
 * 2.systemCode和businessCode不为空时，使用组合属性校验
 * 3.其他的采用简单属性国际化
 */
@Target(ElementType.FIELD)
@Retention(value = RetentionPolicy.RUNTIME)
public @interface I18nField {

    /**
     * 对应国际化平台中存储的field name
     */
    String value() default "";

    /**
     * 系统代码
     *
     * @return
     */
    String systemCode() default "";

    /**
     * 实体对象的表的代码
     *
     * @return
     */
    String businessCode() default "";

    /**
     * 大多数业务实体的businessKey就是其主键id
     */
    String businessKey() default "id";

    /**
     * 传入spring中bean的名字，定制化处理此属性的翻译，最高优先级
     * 当次字段不为空时采用自定义国际化逻辑
     *
     * @return
     */
    String metaCalculator() default "";

}
